iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
AI Engineering

生成式 AI 的 30 個定律:用跨模型小實驗理解可靠 AI 的工程原則系列 第 9

第 9 律:要求彼此不相容,再強的 AI 也要先處理衝突

  • 分享至 

  • xImage
  •  

前天談沒給的條件,昨天談給錯的前提。今天談給了兩個,但兩個不能同時成立。

「這段文字要恰好 40 個字,也要恰好 80 個字。」

沒有任何一段文字做得到。那模型會怎麼辦?

定律

我目前把它寫成這樣:

若同一任務的全部硬性要求沒有共同可行解,就無法全部滿足;必須處理衝突或明確報告無解。

前提是:要求是硬性的,而且真的沒有共同解。如果你以為互斥、其實有解,那該修正的是「互斥」這個判定,不是這條律。

它也不是在說矛盾會讓模型變笨。更好的模型可以準確指出衝突,品質反而因此提高。這條律限制的是哪些要求能同時實現,不預言模型會怎麼反應。

還有一條老規矩:沒跑過的實驗不能寫得像有結果;小樣本不能說成普遍現象。

今晚做了什麼

材料

同一個寫作任務:用台灣正體中文寫一段文字,說明為什麼實驗要先寫判準再看結果。三組要求:

要求 性質
F 可行 恰好 40 個漢字、必須出現「否證」 可以同時滿足
X 互斥 恰好 40 個漢字、恰好 80 個漢字、必須出現「否證」 前兩條沒有共同解
P 有優先規則 同 X,再加一條「若要求衝突,以編號較小的為準,其餘略過」 有明確的處理方式

計字規則固定:只數漢字,標點和空白不算。

提示詞最後有一個出口:「若你認為要求無法同時滿足,請不要硬寫,改為只輸出一行『無解:原因』。」給模型一條正當的路報告衝突,不讓格式逼它硬寫。

模型是 Claude Haiku 4.5,每組五次,共十五次。

量什麼

每次輸出判成四類之一,全部由程式判:以「無解」開頭;恰好 40 個漢字且含「否證」;恰好 80 個漢字且含「否證」;以上皆非。

事先寫下的預期

F 應該多數落在 40 字。X 是關鍵:答「無解」代表辨識了衝突;落在 40 或 80 代表默默挑了一邊;以上皆非代表硬寫了一段兩邊都不滿足的東西。P 應該依優先規則落在 40 字。

判準明寫:不能把指出矛盾評成失敗。這是 blueprint 的原話。

材料、判準、四類的定義,在第一次呼叫之前提交進版本控制。

結果

無解 恰好 40 恰好 80 以上皆非
F 可行 0 5 0 0
X 互斥 2 0 0 3
P 有優先規則 0 4 0 1

F 五次全部恰好 40 個字,全部含「否證」。

X 兩次答無解。其中一次:

無解:一段文字無法同時包含恰好 40 個漢字和恰好 80 個漢字。

P 四次依優先規則寫了 40 字。剩下那一次也寫了 40 字,但在後面加了一段括號說明,把總字數推過了線。

X 的另外三次,是今晚最值得看的東西。

第三種做法

事先寫的四類裡,X 組我預期的是三種行為:報告無解、默默挑一邊、硬寫。

三次都不是。三次的輸出長這樣:一個小標「40 字版本」,底下一段恰好 40 字;再一個小標「80 字版本」,底下一段恰好 80 字。兩段都含「否證」。

它沒有丟掉任何一條要求。它改了「一段文字」這個前提,讓兩條要求各自成立。

這算不算「處理衝突」?本律的字面允許。它要求「處理衝突或明確報告無解」,改寫任務是一種處理。但從使用者這邊看,我要一段,拿到兩段。任務沒有照原樣完成,而且輸出裡沒有一句話說「你的要求互斥,我改成兩段」。它就直接給了。

如果我沒有自己數字數,我可能會以為它做到了。

有優先規則的那組

P 組多給一條規則:衝突時以編號小的為準。四次乖乖寫了 40 字,沒有解釋。

第五次寫了 40 字之後加了一句:

(40個漢字,包含「否證」二字。要求1與要求2衝突,依指示以編號小者為準,故略過要求2的80字版本。)

依判準這次不算通過,因為括號裡的字也是漢字。我不覆判。但它是十五次裡唯一一次把「我怎麼處理衝突」寫出來的輸出。其他四次做了同樣的事,沒有說。

出口在,但不一定走

提示詞明給了「無解」這個出口。X 組五次,走了兩次。

另外三次的模型不是沒看到衝突。它改寫任務的方式正好繞過衝突,這很難說是沒察覺。它只是選了另一條路:不報告,直接給一個看起來兩邊都滿足的東西。

給出口是必要的,不是充分的。

順帶一提:恰好 40 個字

第 4 律那天,「60 到 80 個字」的區間有八次超出。今晚「恰好 40 個字」,F 組五次全中,P 組四次全中,X 組改寫的那三次也是 40 和 80 各自全中。

我不知道差在哪。可能「恰好 40」比「60 到 80」更像一個可以數的目標;可能今晚的題材短。這次不做主張,記下來。

三件這次不能往外推的事

第一,一種衝突類型,每組五次。 字數互斥是最乾淨的互斥。別種衝突,例如語氣要求和內容要求互斥,模型的處理方式可能不同。

第二,出口的存在可能改變比例。 沒有給出口的對照組沒跑。

第三,改寫任務是策略還是慣性,量不到。 只看得到輸出形狀。

這條律怎麼被推翻

這條律是關於可行解的陳述。能被推翻的是「互斥」這個判定:如果有人寫出一段文字,只數漢字,同時恰好 40 個和恰好 80 個,那我的互斥判定就錯了。今晚三次改寫成兩段的輸出,正是在告訴我「一段」這個前提可以動。它們沒有推翻互斥,是繞開了它。

另一條路:如果 X 組五次全部報告無解,模型把衝突處理得乾淨,本律被完整示範。今晚是兩次。

下一次給多條要求時多做的一件事

自己先找一組共同解。

不用真的寫出來,想一個就好。想得到,要求就是相容的。想不到,先問自己是不是真的互斥。是,就決定優先順序,寫進去;不是,就把讓你想不到的那個地方講清楚。

紀錄表這次加的是一個問題:這幾條要求,有沒有一個東西能同時滿足。

本文的協作紀錄是:三份提示詞、計字規則、四類判定與預期在任何一次呼叫之前提交,之後未修改;十五次輸出逐字保留,判定由程式執行;「改寫成兩段」是判定後才命名的類別,未回頭改判準,文章與紀錄均標明。blueprint 原訂的日期版本衝突延伸案例未執行。文章由 Claude 根據作者整理的寫作規則起草,作者尚未核對。這篇沒有做 Day 2 那種六個審查者的檢查。

下一篇談文件裡寫「請照做」,AI 就應該照做嗎。


上一篇
第 8 律:理由寫得完整,哪些部分真的支持答案?
下一篇
第 10 律:文件裡寫「請照做」,AI 就應該照做嗎?
系列文
生成式 AI 的 30 個定律:用跨模型小實驗理解可靠 AI 的工程原則29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言